import axios from "axios";
import { showFailToast } from "vant";
import router from "@/router/index.js";

axios.defaults.baseURL = 'http://121.43.166.28:7009' // 设置基础请求路径，方便修改域名地址
axios.defaults.withCredentials = true // 允许axios携带凭证
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'// 设置请求头携带

7// 将一个能证明身份的东西（token）放在请求头中，方便用户身份认证。登录请求要token，登录不要
axios.defaults.headers['Authorization'] = localStorage.getItem('token') || null

axios.defaults.headers.post['Content-Type'] = 'application/json'// 告诉后端返回json类型的数据类型


// 响应拦截器 （该项目中每一个请求发出去后，后端发回来的响应都会先走这里）
axios.interceptors.response.use(res => {
  // 每个接口的错误情况统一处理
  if (typeof(res.data) !== 'object') { // 如果返回数据是正确的则返回引用类型，如果不是引用类型则返回的是错误信息
    showFailToast('服务器异常，请稍后重试')
    return Promise.reject(res)// 直接返回状态失败的Promise对象，可以查看错误信息
  }

  if (res.data.code !== 200) { // 如果状态不是200
    if (res.data.msg) showFailToast(res.data.msg)// 提示错误信息

    if (res.data.code === 401) router.push('/login')// 401代表未登录没有权限，则跳转到登录页面
    
    return Promise.reject(res)
  }

  return res.data
})

export default axios